package com.smart.community.region.entity;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.Data;

/**
 * 业主房户关联实体类
 * 
 * @author Wu.Liang
 * @since 2025-08-20
 * @version 1.0.0
 */
@Data
@TableName("sc_owner_household")
public class OwnerHousehold implements Serializable {
    /**
	 * @author Wu.Liang
	 * @date 2025年8月20日
	 */
	private static final long serialVersionUID = 2424840984625708074L;

	/**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

	/**
     * 业主ID
     */
    @TableField("owner_id")
    private Long ownerId;
    
    /**
     * 房户ID
     */
    @TableField("household_id")
    private Long householdId;
    
    /**
     * 产权类型：1-完全产权，2-共有产权，3-部分产权
     */
    @TableField("ownership_type")
    private Integer ownershipType;
    
    /**
     * 产权比例（%）
     */
    @TableField("ownership_ratio")
    private BigDecimal ownershipRatio;
    
    /**
     * 产权开始日期
     */
    @TableField("ownership_start_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate ownershipStartDate;
    
    /**
     * 产权结束日期（适用于部分产权）
     */
    @TableField("ownership_end_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate ownershipEndDate;
    
    /**
     * 是否主业主：0-否，1-是
     */
    @TableField("is_primary_owner")
    private Integer isPrimaryOwner;
    
    /**
     * 房产证号
     */
    @TableField("certificate_number")
    private String certificateNumber;
    
    /**
     * 房产证日期
     */
    @TableField("certificate_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate certificateDate;
    
    /**
     * 抵押信息
     */
    @TableField("mortgage_info")
    private String mortgageInfo;
    
    /**
     * 备注信息
     */
    @TableField("remark")
    private String remark;
    
    /**
     * 状态：0-禁用，1-启用
     */
    @TableField("status")
    private Integer status;
    
    /**
     * 关联状态：0-待确认，1-已确认，2-已解除
     */
    @TableField("association_status")
    private Integer associationStatus;
    
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    
    /**
     * 创建人ID
     */
    @TableField(fill = FieldFill.INSERT)
    private Long createBy;
    
    /**
     * 更新人ID
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateBy;
}
